using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._SpatialAnalystTools._Reclass
{
    /// <summary>
    /// <para>Rescale by Function</para>
    /// <para>Rescales the input raster values by applying a selected transformation function and transforming the resulting values onto a specified continuous evaluation scale.</para>
    /// <para>通过应用选定的变换函数并将结果值转换为指定的连续评估刻度来重新缩放输入栅格值。</para>
    /// </summary>    
    [DisplayName("Rescale by Function")]
    public class RescaleByFunction : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public RescaleByFunction()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_raster">
        /// <para>Input raster</para>
        /// <para>The input raster to rescale.</para>
        /// <para>要重新缩放的输入栅格。</para>
        /// </param>
        /// <param name="_out_raster">
        /// <para>Output raster</para>
        /// <para><xdoc>
        ///   <para>The output rescaled raster.</para>
        ///   <para>The output will be a floating-point raster with values ranging from (or within) the From scale and the To scale evaluation values.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出重新缩放栅格。</para>
        ///   <para>输出将为浮点栅格，其值范围为（或内部）从比例和到比例评估值。</para>
        /// </xdoc></para>
        /// </param>
        public RescaleByFunction(object _in_raster, object _out_raster)
        {
            this._in_raster = _in_raster;
            this._out_raster = _out_raster;
        }
        public override string ToolboxName => "Spatial Analyst Tools";

        public override string ToolName => "Rescale by Function";

        public override string CallName => "sa.RescaleByFunction";

        public override List<string> AcceptEnvironments => ["autoCommit", "cellSize", "cellSizeProjectionMethod", "configKeyword", "extent", "geographicTransformations", "mask", "outputCoordinateSystem", "scratchWorkspace", "snapRaster", "tileSize", "workspace"];

        public override object[] ParameterInfo => [_in_raster, _out_raster, _transformation_function, _from_scale, _to_scale];

        /// <summary>
        /// <para>Input raster</para>
        /// <para>The input raster to rescale.</para>
        /// <para>要重新缩放的输入栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_raster { get; set; }


        /// <summary>
        /// <para>Output raster</para>
        /// <para><xdoc>
        ///   <para>The output rescaled raster.</para>
        ///   <para>The output will be a floating-point raster with values ranging from (or within) the From scale and the To scale evaluation values.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出重新缩放栅格。</para>
        ///   <para>输出将为浮点栅格，其值范围为（或内部）从比例和到比例评估值。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output raster")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_raster { get; set; }


        /// <summary>
        /// <para>Transformation function</para>
        /// <para><xdoc>
        ///   <para>Specifies the continuous function to transform the values from the input raster.</para>
        ///   <para>The transformation functions are used to specify the function to rescale the input data. A general description of each function and the default values for the functions are detailed in the table below.</para>
        ///   <bulletList>
        ///     <bullet_item>Exponential—Rescale input values using an exponential function.Use when the preference increases with an increase in the input values and the preference increases more rapidly as the input values become larger.
        ///     <bulletList>
        ///       <bullet_item>Input shift—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Base factor—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Gaussian—Rescale input values using a Gaussian function.The midpoint of the normal distribution defines the most preferred value and is generally assigned to the To scale. Preference values decrease as the values move from the midpoint until eventually reaching the least preference with the lowest and highest input values generally being assigned to the From scale.
        ///     <bulletList>
        ///       <bullet_item>Midpoint—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Spread—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Large—Used to indicate that the larger values from the input raster have higher preference.The midpoint identifies the crossover point with input values greater than the midpoint having increasing preference and values below having decreasing preference.
        ///     <bulletList>
        ///       <bullet_item>Midpoint—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Spread—The default is 5.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Linear—Rescale the input values using a linear function.When the minimum is less than the maximum the larger values are more preferred.
        ///     <bulletList>
        ///       <bullet_item>Minimum—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Maximum—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Logarithm—Rescale input data using a logarithm function.Used when the preference for the lower input values increases rapidly. As the input values increase, the preference tapers off, with a further increase in the input values.
        ///     <bulletList>
        ///       <bullet_item>Input shift—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Factor—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>LogisticDecay—Rescale input data using a logistic decay function.Used when small input values are most preferred. As the values increase, the preferences rapidly decrease, until the preferences taper off at the larger input values.
        ///     <bulletList>
        ///       <bullet_item>Minimum—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Maximum—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Y intercept percent—The default is 99.0.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>LogisticGrowth—Rescale input data using a logistic growth function.Used when small input values are least preferred. As the values increase, the preferences rapidly increase, until the preferences taper off at the larger input values.
        ///     <bulletList>
        ///       <bullet_item>Minimum—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Maximum—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Y intercept percent—The default is 1.0.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>MSLarge—Rescale input data based on the mean and standard deviation, where larger values in the input raster have higher preference.The result can be similar to the Large function, depending on how the multipliers of the mean and standard deviation are defined.
        ///     <bulletList>
        ///       <bullet_item>Mean multiplier—The default is 1.  </bullet_item><para/>
        ///       <bullet_item>Standard deviation multiplier—The default is 1.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>MSSmall—Rescale input data based on the mean and standard deviation, where smaller values in the input raster have higher preference.The result can be similar to the Small function, depending on how the multipliers of the mean and standard deviation are defined.
        ///     <bulletList>
        ///       <bullet_item>Mean multiplier—The default is 1.  </bullet_item><para/>
        ///       <bullet_item>Standard deviation multiplier—The default is 1.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Near—Use when the input values very close to the midpoint are preferred.Near is similar to the Gaussian function but decreases at a faster rate.
        ///     <bulletList>
        ///       <bullet_item>Midpoint—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Spread—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Power—Rescale the input data, applying a power function using a specified exponent.Use when the preference for the input values increases rapidly, with an increase in the input values.
        ///     <bulletList>
        ///       <bullet_item>Input shift—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Exponent—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Small—Use to indicate that the smaller values from the input raster have higher preference.The midpoint identifies the crossover point, with input values below the midpoint having increasing preference, and values that are greater having decreasing preference.
        ///     <bulletList>
        ///       <bullet_item>Midpoint—The default is derived from the input raster.  </bullet_item><para/>
        ///       <bullet_item>Spread—The default is 5.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>SymmetricLinear—Rescale input data by mirroring a linear function around the midpoint of the minimum and maximum.Use when a particular input value is the most preferred, with the preferences decreasing linearly as the input values move from the mirrored point.
        ///     <bulletList>
        ///       <bullet_item>Minimum—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Maximum—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Lower threshold—The default is the minimum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value below threshold—The default is the From scale value.  </bullet_item><para/>
        ///       <bullet_item>Upper threshold—The default is the maximum of the input raster.  </bullet_item><para/>
        ///       <bullet_item>Value above threshold—The default is the To scale value.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>The default transformation is MS Small.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定用于变换输入栅格中的值的连续函数。</para>
        ///   <para>转换函数用于指定重新缩放输入数据的函数。下表详细介绍了每个函数的一般说明和函数的默认值。</para>
        ///   <bulletList>
        /// <bullet_item>指数 （Exponential） - 使用指数函数重新缩放输入值。当首选项随着输入值的增加而增加，并且随着输入值变大而增加时，使用首选项。
        ///     <bulletList>
        ///       <bullet_item>输入偏移 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>基因子 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>高斯 - 使用高斯函数重新缩放输入值。正态分布的中点定义了首选值，通常分配给 To 刻度。首选项值随着值从中点移动而减小，直到最终达到最小首选项，最低和最高输入值通常被分配给“起始人”刻度。
        ///     <bulletList>
        ///       <bullet_item>中点 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>展开 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>大 - 用于指示输入栅格中较大的值具有较高的优先级。中点标识输入值大于中点的交叉点，该交叉点具有递增的偏好，低于中点的值具有递减的偏好。
        ///     <bulletList>
        ///       <bullet_item>中点 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>点差 - 默认值为 5。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>线性 （Linear） - 使用线性函数重新缩放输入值。当最小值小于最大值时，越大的值越好。
        ///     <bulletList>
        ///       <bullet_item>最小值 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>最大值 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>对数 - 使用对数函数重新缩放输入数据。当对较低输入值的偏好迅速增加时使用。随着输入值的增加，首选项逐渐减少，输入值进一步增加。
        ///     <bulletList>
        ///       <bullet_item>输入偏移 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>因子 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>LogisticDecay - 使用逻辑衰减函数重新缩放输入数据。在最首选较小的输入值时使用。随着值的增加，首选项会迅速减少，直到首选项在较大的输入值处逐渐减少。
        ///     <bulletList>
        ///       <bullet_item>最小值 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>最大值 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>Y 截距百分比 - 默认值为 99.0。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>LogisticGrowth - 使用逻辑增长函数重新缩放输入数据。当小输入值最不受欢迎时使用。随着值的增加，首选项会迅速增加，直到首选项在较大的输入值处逐渐减少。
        ///     <bulletList>
        ///       <bullet_item>最小值 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>最大值 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>Y 截距百分比 - 默认值为 1.0。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>MSLarge - 根据均值和标准差重新调整输入数据的比例，其中输入栅格中的值越大，优先级越高。结果可能类似于 Large 函数，具体取决于均值和标准差的乘数的定义方式。
        ///     <bulletList>
        ///       <bullet_item>均值乘数 - 默认值为 1。</bullet_item><para/>
        ///       <bullet_item>标准差乘数 - 默认值为 1。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>MSSmall - 根据平均值和标准差重新缩放输入数据，其中输入栅格中较小的值具有较高的优先级。结果可能类似于 Small 函数，具体取决于均值和标准差的乘数的定义方式。
        ///     <bulletList>
        ///       <bullet_item>均值乘数 - 默认值为 1。</bullet_item><para/>
        ///       <bullet_item>标准差乘数 - 默认值为 1。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>接近 （Near） - 当输入值非常接近中点时使用。Near 类似于高斯函数，但以更快的速度减小。
        ///     <bulletList>
        ///       <bullet_item>中点 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>展开 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>幂 （Power） - 重新缩放输入数据，使用指定的指数应用幂函数。当输入值的首选项随着输入值的增加而快速增加时使用。
        ///     <bulletList>
        ///       <bullet_item>输入偏移 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>指数 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>小 - 用于指示输入栅格中较小的值具有较高的优先级。中点表示交叉点，低于中点的输入值具有递增的偏好，较大的值具有递减的偏好。
        ///     <bulletList>
        ///       <bullet_item>中点 - 默认值派生自输入栅格。</bullet_item><para/>
        ///       <bullet_item>点差 - 默认值为 5。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        /// <bullet_item>对称线性 （SymmetricLinear） - 通过镜像最小值和最大值中点周围的线性函数来重新缩放输入数据。当特定输入值最受欢迎时使用，随着输入值从镜像点移动，首选项线性递减。
        ///     <bulletList>
        ///       <bullet_item>最小值 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>最大值 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>下限 - 默认值为输入栅格的最小值。</bullet_item><para/>
        ///       <bullet_item>低于阈值的值 - 默认值为起始比例值。</bullet_item><para/>
        ///       <bullet_item>阈值上限 - 默认值为输入栅格的最大值。</bullet_item><para/>
        ///       <bullet_item>高于阈值的值 - 默认值为至缩放值。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///   </bulletList>
        ///   <para>默认转换为 MS Small。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Transformation function")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _transformation_function { get; set; } = null;


        /// <summary>
        /// <para>From scale</para>
        /// <para><xdoc>
        ///   <para>The starting value of the output evaluation scale.</para>
        ///   <para>The From scale value cannot be equal to the To scale value. The From scale can be lower or higher than the To scale (for example, from 1 to 10, or from 10 to 1).</para>
        ///   <para>The value must be positive and it can be either an integer or double.</para>
        ///   <para>The default is 1.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出评估量表的起始值。</para>
        ///   <para>“从”刻度“值不能等于”至“刻度”值。“从”刻度可以低于或高于“至”刻度（例如，从 1 到 10，或从 10 到 1）。</para>
        ///   <para>该值必须为正数，并且可以是整数或双精度。</para>
        ///   <para>默认值为 1。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("From scale")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _from_scale { get; set; } = 1;


        /// <summary>
        /// <para>To scale</para>
        /// <para><xdoc>
        ///   <para>The ending value of the output evaluation scale.</para>
        ///   <para>The To scale value cannot be equal to the From scale value. The To scale can be lower or higher than the From scale (for example, from 1 to 10, or from 10 to 1).</para>
        ///   <para>The value must be positive and it can be either an integer or double.</para>
        ///   <para>The default is 10.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出评估量表的结束值。</para>
        ///   <para>“至”刻度值不能等于“从刻度”值。“至”刻度可以低于或高于“从”刻度（例如，从 1 到 10，或从 10 到 1）。</para>
        ///   <para>该值必须为正数，并且可以是整数或双精度。</para>
        ///   <para>默认值为 10。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("To scale")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _to_scale { get; set; } = 10;


        public RescaleByFunction SetEnv(int? autoCommit = null, object cellSize = null, object configKeyword = null, object extent = null, object geographicTransformations = null, object mask = null, object outputCoordinateSystem = null, object scratchWorkspace = null, object snapRaster = null, double[] tileSize = null, object workspace = null)
        {
            base.SetEnv(autoCommit: autoCommit, cellSize: cellSize, configKeyword: configKeyword, extent: extent, geographicTransformations: geographicTransformations, mask: mask, outputCoordinateSystem: outputCoordinateSystem, scratchWorkspace: scratchWorkspace, snapRaster: snapRaster, tileSize: tileSize, workspace: workspace);
            return this;
        }

    }

}